package org.dromara.common.mail.utils;

import jakarta.mail.Authenticator;
import jakarta.mail.PasswordAuthentication;


/**
 * @Author 刘武贵
 * @Date 2024/8/15 22:00
 * @Description 功能描述：用户名密码验证器
 */
/**
 * UserPassAuthenticator 类继承自 Authenticator 类，实现了基于用户名和密码的认证功能。
 * 它主要用于需要进行用户名和密码验证的网络请求中，以确保用户身份的有效性。
 */
public class UserPassAuthenticator extends Authenticator {

    /**
     * 用户名
     */
    private final String user;

    /**
     *  密码
     */
    private final String pass;

    /**
     * 构造
     *
     * @param user 用户名
     * @param pass 密码
     */
    public UserPassAuthenticator(String user, String pass) {
        this.user = user;
        this.pass = pass;
    }

    /**
     * 获取密码认证信息
     *
     * @return PasswordAuthentication 返回一个包含用户凭证的PasswordAuthentication对象
     *
     * 此方法重写自java.net.Authenticator类，用于提供一种认证方式，
     * 允许Java应用程序在需要身份验证时提供用户名和密码。在本类中，
     * 我们实现了基于HTTP基本认证的密码提供方式。通过返回PasswordAuthentication对象，
     * 可以在HTTP请求中附加用户名和密码，以便进行身份验证。
     */
    @Override
    protected PasswordAuthentication getPasswordAuthentication() {
        // 创建并返回一个包含用户名和密码的PasswordAuthentication对象
        return new PasswordAuthentication(this.user, this.pass);
    }

}
